package com.xiyu.service.vo.customer.customer;

import com.xiyu.service.vo.customer.info.baseVO.CustomerInfoBase;
import com.xiyu.service.vo.customer.info.baseVO.CustomerWebsiteBase;
import com.xiyu.service.vo.customer.contact.baseVO.CustomerContactSocialMediaBase;
import com.xiyu.service.vo.customer.info.baseVO.CustomerImageBase;
import com.xiyu.service.vo.customer.contact.baseVO.CustomerContactMailBase;
import com.xiyu.service.vo.customer.contact.baseVO.CustomerContactBase;
import com.xiyu.service.vo.customer.contact.baseVO.CustomerContactBusinessCardBase;
import com.xiyu.service.vo.customer.contact.baseVO.CustomerContactPhoneBase;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;

import jakarta.validation.Valid;
import com.xiyu.service.enums.common.CommonStatusEnum;
import com.xiyu.service.framework.validation.InEnum;

@Schema(description = "获取单个客户详情")
@Data
@AllArgsConstructor
public class CustomerSingleGetDetailOutput extends CustomerInfoBase {

    @Schema(description = "客户图片")
    @Valid
    private List<image> images;

    @Schema(description = "客户信息主键ID")
    private Long id;

    @Schema(description = "客户网址")
    @Valid
    private List<website> websites;

    @Schema(description = "客户联系人")
    @Valid
    private List<contact> contacts;

    @Schema(description = "客户联系人手机号")
    @Data
    public static class phone extends CustomerContactPhoneBase {

        @Schema(description = "客户联系人手机号主键ID")
        private Long id;
    }

    @Schema(description = "客户联系人名片")
    @Data
    public static class businessCard extends CustomerContactBusinessCardBase {

        @Schema(description = "客户联系人名片主键ID")
        private Long id;
    }

    @Schema(description = "客户联系人")
    @Data
    public static class contact extends CustomerContactBase {

        @Schema(description = "客户联系人社交媒体")
        private List<socialMedia> socialMedias;

        @Schema(description = "客户联系人主键ID")
        private Long id;

        @Schema(description = "客户联系人名片")
        private List<businessCard> businessCards;

        @Schema(description = "客户联系人邮箱")
        private List<mail> mails;

        @Schema(description = "客户联系人手机号")
        private List<phone> phones;
    }

    @Schema(description = "客户联系人邮箱")
    @Data
    public static class mail extends CustomerContactMailBase {

        @Schema(description = "客户联系人邮箱主键ID")
        private Long id;
    }

    @Schema(description = "客户图片")
    @Data
    public static class image extends CustomerImageBase {

        @Schema(description = "客户图片主键ID")
        private Long id;
    }

    @Schema(description = "客户联系人社交媒体")
    @Data
    public static class socialMedia extends CustomerContactSocialMediaBase {

        @Schema(description = "客户联系人社交媒体主键ID")
        private Long id;
    }

    @Schema(description = "客户网址")
    @Data
    public static class website extends CustomerWebsiteBase {

        @Schema(description = "客户网址主键ID")
        private Long id;
    }
}